Dart هي لغة برمجة قوية طورتها Google، وهي اللغة الأساسية لتطوير تطبيقات Flutter. إذا كنت تريد تعلم Dart، فإليك دليلك الشامل من الأساسيات إلى الميزات المتقدمة! 💡
Dart هي لغة برمجة قوية طورتها Google، وهي اللغة الأساسية لتطوير تطبيقات Flutter. إذا كنت تريد تعلم Dart، فإليك دليلك الشامل من الأساسيات إلى الميزات المتقدمة! 💡
void main() {
print("مرحبًا بك في Dart!");
}
void main() {
int age = 18;
if (age >= 18) {
print("يمكنك التصويت!");
} else {
print("لا يمكنك التصويت بعد.");
}
}
المحددات (Modifiers) هي كلمات مفتاحية تُستخدم في Dart للتحكم في الوصول إلى المتغيرات، الدوال، الكلاسات، والمكتبات. هناك أنواع مختلفة من المحددات التي تؤثر على الرؤية (Visibility)، التعديل (Mutability)، وسلوك الكود.
class Person {
String name; // متغير عام (Public)
int _age; // متغير خاص (Private)
Person(this.name, this._age);
void display() {
print("الاسم: $name، العمر: $_age");
}
}
void main() {
Person person = Person("أحمد", 25);
print(person.name); // ✅ يمكن الوصول إليه
// print(person._age); ❌ خطأ لأنه خاص
person.display(); // ✅ يمكن الوصول إليه
}
void main() {
final String name = "أحمد"; // ثابت يمكن تعيينه مرة واحدة
const double pi = 3.14; // ثابت لا يمكن تغييره أبدًا
// name = "علي"; // ❌ خطأ: لا يمكن إعادة تعيين قيمة `final`
// pi = 3.1415; // ❌ خطأ: لا يمكن إعادة تعيين قيمة `const`
}
التصفح في Dart يتم استخدامه بشكل أساسي عند تطوير تطبيقات الويب أو الموبايل باستخدام Flutter. هناك عدة طرق للتنقل بين الصفحات وإدارة مسار التطبيق، وسنغطيها بالتفصيل.
import 'dart:io';
void main() {
while (true) {
print("اختر خيارًا:");
print("1. عرض الصفحة الرئيسية");
print("2. عرض الإعدادات");
print("3. خروج");
String? choice = stdin.readLineSync();
switch (choice) {
case "1":
print("📌 أنت في الصفحة الرئيسية");
break;
case "2":
print("⚙️ أنت في صفحة الإعدادات");
break;
case "3":
print("👋 وداعًا!");
exit(0);
default:
print("❌ خيار غير صحيح، حاول مرة أخرى.");
}
}
}
import 'dart:html';
void main() {
querySelector('#home')?.onClick.listen((_) {
window.location.href = 'home.html';
});
querySelector('#settings')?.onClick.listen((_) {
window.location.href = 'settings.html';
});
}
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: HomePage(),
));
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("الصفحة الرئيسية")),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingsPage()),
);
},
child: Text("الانتقال إلى الإعدادات"),
),
),
);
}
}
class SettingsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("الإعدادات")),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text("العودة"),
),
),
);
}
}
في هذا الدرس، سنغطي أنماط البرمجة الكائنية (OOP)، البرمجة الوظيفية (Functional Programming)، المزج (Mixins)، البرمجة التفاعلية (Reactive Programming)، والتنفيذ المتزامن (Asynchronous Programming).
class Animal {
String name;
Animal(this.name);
void makeSound() {
print("الحيوان يصدر صوتًا!");
}
}
class Dog extends Animal {
Dog(String name) : super(name);
@override
void makeSound() {
print("$name ينبح: Woof! Woof!");
}
}
void main() {
Dog dog = Dog("Buddy");
dog.makeSound(); // ✅ Buddy ينبح: Woof! Woof!
}
void applyFunction(Function(int) func, int value) {
print("النتيجة: ${func(value)}");
}
int square(int x) => x * x;
void main() {
applyFunction(square, 4); // ✅ النتيجة: 16
}
Dart توفر أدوات قوية للتعامل مع الملفات، مما يسمح بقراءة وكتابة الملفات بسهولة.
import 'dart:io';
void main() async {
final file = File('example.txt');
String content = await file.readAsString();
print(content);
}
import 'dart:io';
void main() async {
final file = File('example.txt');
await file.writeAsString('Hello, Dart!');
}
الجمل الشرطية والحلقات هي أدوات أساسية في البرمجة تسمح باتخاذ القرارات وتكرار العمليات.
void main() {
int age = 18;
if (age >= 18) {
print("أنت بالغ.");
} else {
print("أنت قاصر.");
}
}
void main() {
for (int i = 0; i < 5; i++) {
print("الرقم: $i");
}
}
الدوال هي كتل من الكود يمكن استدعاؤها لتنفيذ مهمة محددة. تساعد في تنظيم الكود وإعادة استخدامه.
void greet(String name) {
print("مرحبًا، $name!");
}
void main() {
greet("علي"); // ✅ مرحبًا، علي!
}
المصفوفات هي هياكل بيانات تخزن مجموعة من العناصر في ترتيب معين. يمكن الوصول إلى العناصر باستخدام الفهرس.
void main() {
List numbers = [1, 2, 3, 4, 5];
print(numbers[0]); // ✅ 1
}
الهاش هو هيكل بيانات يخزن البيانات في أزواج مفتاح-قيمة. يمكن استخدامه لتخزين البيانات المرتبطة.
void main() {
Map person = {
'name': 'علي',
'age': '25'
};
print(person['name']); // ✅ علي
}
الاستثناءات هي أخطاء تحدث أثناء تنفيذ البرنامج. يمكن التعامل معها باستخدام `try`، `catch`، و `finally`.
void main() {
try {
int result = 10 ~/ 0;
} catch (e) {
print("حدث خطأ: $e");
} finally {
print("هذا الكود سيتم تنفيذه دائمًا.");
}
}